/* 
封装ajax请求的函数
1. 参数: url
2. 返回: promise
说明: 只能发GET请求, 通过url来指定params或query参数
*/

function ajax(url) {
  // 返回promise对象
  return new Promise((resolve, reject) => { // 发异步ajax请求
    // 创建xhr对象
    const xhr = new XMLHttpRequest()
    // 打开连接(设置请求信息)
    xhr.open('GET', url)
    // 绑定监听
    xhr.onreadystatechange = () => {
      // 请求完成后继续处理
      if (xhr.readyState===4) {
        // 如果请求成功 => 将promise变为成功的
        if (xhr.status>=200 && xhr.status<=299) {
          // 将响应体json解析为js对象, 指定为成功的value
          resolve(JSON.parse(xhr.responseText))
        } else {
           // 如果请求失败 => 将promise变为失败的
           // 创建一个包含错误信息的error对象
           reject(new Error(`请求失败 status=${xhr.status}`))
        }
      }
    }
    // 发送请求
    xhr.send()
  })
}